home *** CD-ROM | disk | FTP | other *** search
/ SuperHack / SuperHack CD.bin / CODING / CPP / CONVERTI.ZIP / CONVERTI.TXT
Encoding:
Text File  |  1996-04-26  |  4.5 KB  |  245 lines

  1.  
  2.  
  3.  
  4.  
  5.          General Steps in Converting C application to C++ 
  6.  
  7.  
  8.  
  9.                    John Tal - Feb 12, 1992 
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.         1.  Create Class Defintion 
  18.  
  19.  
  20.  
  21.         1.1  Identify Private And Protected Members 
  22.  
  23.  
  24.  
  25.         Identify all variables which are passed through functions 
  26.  
  27.         but are really private to the class.  These include: 
  28.  
  29.  
  30.  
  31.                 o  Work Areas 
  32.  
  33.                 o  Head Pointers 
  34.  
  35.                 o  Counters 
  36.  
  37.  
  38.  
  39.         Place these in the private or protected class sections. 
  40.  
  41.  
  42.  
  43.          
  44.  
  45.         1.2  Install Public Access To Private Members 
  46.  
  47.  
  48.  
  49.         Identify all private or protected class member variables 
  50.  
  51.         which interact with the application.  All reading or writing 
  52.  
  53.         of non-public members should be accomplished by a public 
  54.  
  55.         class member function.  There should be NO access to non-public 
  56.  
  57.         members by the application. 
  58.  
  59.  
  60.  
  61.         1.3  Identify Non-Public Functions 
  62.  
  63.  
  64.  
  65.         All functions which are not directly called by the application 
  66.  
  67.         should be private or protected. 
  68.  
  69.  
  70.  
  71.         1.4  Modify Class Function Prototypes 
  72.  
  73.  
  74.  
  75.         Remove from all functions parameters which are now embodied 
  76.  
  77.         by class member data.  This includes the same items as 
  78.  
  79.         in 1.1. 
  80.  
  81.  
  82.  
  83.         1.5  Create Class Constructor And Descructor 
  84.  
  85.  
  86.  
  87.         These can be VOID and NULL functions are whatever is required 
  88.  
  89.         by the class.  All allocated memory should be freed in the 
  90.  
  91.         destructor. 
  92.  
  93.  
  94.  
  95.         1.6  Determine Class Access Within Heirachies 
  96.  
  97.  
  98.  
  99.         There will be elementary classes which you will use to build 
  100.  
  101.         more sophisticated classes through different methods.  Each 
  102.  
  103.         method will influence the security and general object access 
  104.  
  105.         to be defined.  It can also be helpful to distinguish between 
  106.  
  107.         what a class contains and what it does in refining class 
  108.  
  109.         interfaces. 
  110.  
  111.  
  112.  
  113.         1.6.1  Simple Inclusion 
  114.  
  115.  
  116.  
  117.         In this case a class is constructed with other classes as 
  118.  
  119.         members. 
  120.  
  121.  
  122.  
  123.         1.6.2  Derived Classes 
  124.  
  125.  
  126.  
  127.         This includes the areas of multiple-inheritance and polymorphism. 
  128.  
  129.         The derived class will inherit the class attributes of its 
  130.  
  131.         parent class(es). 
  132.  
  133.  
  134.  
  135.         1.6.3  Deferentiated Access 
  136.  
  137.  
  138.  
  139.         You may discover a situation where you want the application to 
  140.  
  141.         be unable to access certain class areas but you want another 
  142.  
  143.         class to be able to access all class areas.  One solution is 
  144.  
  145.         to use a friend modifier (NOT RECOMMENDED, the friend modifier 
  146.  
  147.         breaks many object-oriented rules).  The best solution may be 
  148.  
  149.         to create a server class which will then access others classes 
  150.  
  151.         for the application. 
  152.  
  153.  
  154.  
  155.  
  156.  
  157.         2   Modify C Source Code 
  158.  
  159.  
  160.  
  161.         2.1  Rename Or Copy Code 
  162.  
  163.  
  164.  
  165.         Rename or copy the c source files from *.c to whichever 
  166.  
  167.         extension is used by your C++ compiler (usually *.cpp). 
  168.  
  169.  
  170.  
  171.         2.2  Modify Code Comments 
  172.  
  173.  
  174.  
  175.         Comments in the source code can be left in the /* style, 
  176.  
  177.         but for those who work in both C and C++, having native 
  178.  
  179.         C++ comments in // style makes it easier to switch  
  180.  
  181.         between languages. 
  182.  
  183.  
  184.  
  185.         2.3  Modify Functions 
  186.  
  187.  
  188.  
  189.         2.3.1  Modify Function Interface  
  190.  
  191.  
  192.  
  193.         Modify function interfaces to no longer pass items such as 
  194.  
  195.         in 1.1.   
  196.  
  197.  
  198.  
  199.         2.3.2  Modify Function Comment Header Block 
  200.  
  201.  
  202.  
  203.         Modify comment header block to include security of class 
  204.  
  205.         member (private, protected, public).  Carefully examine 
  206.  
  207.         any function who's description includes the words 'and' 
  208.  
  209.         or 'or'.  These are signs of cohesion problems. 
  210.  
  211.         (If a function calculates data AND writes it to disk, 
  212.  
  213.         the function should be broken up into two functions, 
  214.  
  215.         one to calculate and one to write.) 
  216.  
  217.  
  218.  
  219.         2.3.3  Break Up Functions 
  220.  
  221.  
  222.  
  223.         Create new functions from those displaying cohesion or 
  224.  
  225.         coupling problems which can be corrected. 
  226.  
  227.  
  228.  
  229.         2.3.4  Create Interface Functions For Class Private Data 
  230.  
  231.  
  232.  
  233.         Create functions necessary for an application to read or  
  234.  
  235.         write (get/set) data which is in private or public  
  236.  
  237.         class security segments. 
  238.  
  239.          
  240.  
  241.  
  242.  
  243.  
  244.  
  245.